package com.qianfeng.yime;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.*;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.qianfeng.yime.adapter.CommonFragmentAdapter;
import com.qianfeng.yime.fragment.FindFragment;
import com.qianfeng.yime.fragment.HomeFragment;
import com.qianfeng.yime.fragment.JianZhiFragment;
import com.qianfeng.yime.model.User;
import com.qianfeng.yime.util.CommonUtils;
import com.qianfeng.yime.util.CurrentSingleton;

import java.util.LinkedList;

/**
 *
 */
public class MainActivity extends FragmentActivity implements ViewPager.OnPageChangeListener,
        RadioGroup.OnCheckedChangeListener {

    private Context context;
    private RadioGroup radioGroup;
    private ViewPager viewPager;
    private Button btnLogin;
    private TextView tvName;
    private TextView tvPhone;
    private CurrentSingleton singleton;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        context = MainActivity.this;
        singleton = CurrentSingleton.getInstance();
        initSlidingMenu();

        radioGroup = (RadioGroup) findViewById(R.id.main_bottom_bar_rg);

        viewPager = (ViewPager) findViewById(R.id.pager_main);
        LinkedList<Fragment> fragments = new LinkedList<Fragment>();
        fragments.add(new HomeFragment());
        fragments.add(new JianZhiFragment());
        fragments.add(new FindFragment());

        CommonFragmentAdapter adapter = new CommonFragmentAdapter(getSupportFragmentManager(), fragments);
        viewPager.setAdapter(adapter);

        viewPager.setOnPageChangeListener(this);
        radioGroup.setOnCheckedChangeListener(this);
        // 设置初始为第一个界面 “首页”，ViewPager 默认显示第0项
        RadioButton rbHome = (RadioButton) radioGroup.getChildAt(0);
        rbHome.setChecked(true);

    }

    /**
     * 添加 SlidingMenu,并且响应 SlidingMenu 中的操作
     */
    public void initSlidingMenu() {
        // TODO 添加侧滑菜单
        SlidingMenu slidingMenu = new SlidingMenu(this, SlidingMenu.LEFT);
        slidingMenu.setTouchModeBehind(SlidingMenu.TOUCHMODE_MARGIN);
        int screenWidth = CommonUtils.getWindowsWidth(this);
        // 设置偏移量为屏幕宽度的 1/ 4
        slidingMenu.setBehindOffset(screenWidth / 4);
        slidingMenu.setFadeEnabled(false);
        View slidingView = getLayoutInflater().inflate(R.layout.sliding_mine, null);
        tvName = (TextView) slidingView.findViewById(R.id.mine_tv_user_name);
        tvPhone = (TextView) slidingView.findViewById(R.id.mine_tv_user_phone);

        // TODO 响应 SlidingMenu 中的操作
        btnLogin = (Button) slidingView.findViewById(R.id.mine_btn_login);
        OnClickSlidingListener cardListener = new OnClickSlidingListener();
        btnLogin.setOnClickListener(cardListener);
        slidingView.findViewById(R.id.mine_card_item_short_work).setOnClickListener(cardListener);
        slidingView.findViewById(R.id.mine_card_item_long_work).setOnClickListener(cardListener);
        slidingView.findViewById(R.id.mine_card_item_collect).setOnClickListener(cardListener);
        slidingView.findViewById(R.id.mine_card_item_resume).setOnClickListener(cardListener);
        slidingView.findViewById(R.id.mine_card_item_setting).setOnClickListener(cardListener);
        slidingView.findViewById(R.id.mine_card_exit).setOnClickListener(cardListener);

        slidingMenu.setMenu(slidingView);

    }

    @Override
    protected void onResume() {
        super.onResume();
        // TODO 获取当前用户状态

        User user = singleton.getUser();
        // ！！ 用户登录后，动态改变。。。
        if (user != null) { // 当前有账户登录
            // 隐藏登录按钮
            btnLogin.setVisibility(View.GONE);
            // TODO 显示用户名和手机号
            String loginName = user.getLoginName();
            String phone = user.getPhone();

            tvName.setText(loginName);
            tvPhone.setText(phone);
            // TODO 显示头像

        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 销毁数据
        singleton.setUser(null);
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
        RadioButton radioButton = (RadioButton) radioGroup.getChildAt(position);
        radioButton.setChecked(true);
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }

    // =================== 设置点击两次返回键退出应用 ====================

    /**
     * 上一次点击Back按键的时间
     */
    private long lastBackTime = 0;

    /**
     * 当前 Activity 显示的时候,点击屏幕上的返回键的事件监听处理方法
     */
    @Override
    public void onBackPressed() {

        //1,获取当前的毫秒数
        long currentTime = System.currentTimeMillis();
        //2,和上一次点击返回键的时间进行比较,相差多少秒就退出

        if (currentTime - lastBackTime <= 2000) {
            //TODO 结束程序
            //利用 super.onBackPressed() 让 Activity 自己处理返回键
            //或者利用 finish() 结束

            finish();

            //也可以通过 System.exit(0) 这个方法,终止整个应用程序进程
            //进程终止,类似 Service 之类的组件将不再继续运行

        } else {
            lastBackTime = currentTime;
            Toast.makeText(this, "再次点击退出", Toast.LENGTH_SHORT).show();
        }

    }

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        // TODO
        switch (checkedId) {
            case R.id.main_bottom_bar_home:
                viewPager.setCurrentItem(0);
                break;
            case R.id.main_bottom_bar_jianzhi:
                viewPager.setCurrentItem(1);
                break;
            case R.id.main_bottom_bar_find:
                viewPager.setCurrentItem(2);
                break;

        }
        // 如果不设置ID则需要这样处理
//        int count = group.getChildCount();
//        for (int i = 0; i < count; i++) {
//            RadioButton rb = (RadioButton) group.getChildAt(i);
//            if (rb.isChecked()) {
//                viewPager.setCurrentItem(i);
//                break;
//            }
//        }
    }

    /**
     * 处理 SlidingMenu 上的点击事件的监听器
     */
    class OnClickSlidingListener implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            Intent intent = null;

            int id = v.getId();
            if (id == R.id.mine_card_exit) { // 退出
                // TODO 退出应用
                finish();
                System.exit(0);
            } else if (id == R.id.mine_btn_login) { // 登录
                intent = new Intent(context, UserLoginActivity.class);
            } else if (id == R.id.mine_card_item_setting) { // 设置
                intent = new Intent(context, SettingActivity.class);
            } else { // 其他需要判断当前是否有用户登录，如果没有则跳转到登陆界面，有则跳转到对应界面
                User user = singleton.getUser();
                if (user == null) { // 如果当前没有用户登录，则跳转到登陆界面
                    intent = new Intent(context, UserLoginActivity.class);
                } else {
                    if (id == R.id.iv_user_icon) { // 头像

                    } else if (id == R.id.mine_card_item_short_work) { // 我的短期工

                    } else if (id == R.id.mine_card_item_long_work) { // 假期工

                    } else if (id == R.id.mine_card_item_collect) { // 收藏

                    } else if (id == R.id.mine_card_item_resume) { // 简历

                    }
                }
            }

            if (intent != null) {
                startActivity(intent);
            }
        }
    }

}
